#include "user_extern.h"

static uint8_t subidx = 0;
static void dis_page1(void); /* 第一页显示 */
static void dis_page2(void); /* 第二页显示 */

/*********************************************************************
 *  名称： win11_setting_status_display
 *  功能： setting_status 显示接口
 *  参数： void
 *  返回值：win_ret 窗口显示状态
 ********************************************************************/
uint8_t win11_setting_status_display(void)
{
    uint8_t win_ret = WINDOWS_STATUS_DIS_ONLY;
    ui.draw_sys_title(const_setting_status);
    switch (subidx)
    {
    case 0:
        dis_page1();
        break;
    case 1:
        dis_page2();
        break;
    }
    return win_ret;
}

/*********************************************************************
 *  名称： win11_setting_status_btn_select
 *  功能： setting_ota 界面 选择按钮触发，切换下一页显示
 *  参数： void
 *  返回值：0
 ********************************************************************/
uint8_t win11_setting_status_btn_select(void *arg)
{
    subidx++;
    if (subidx > 1)
    {
        subidx = 0;
    }
    return 0;
}

/*********************************************************************
 *  名称： win11_setting_status_btn_enter
 *  功能： setting_ota 界面 确定按钮触发，切换下一页/触发系统初始化
 *  参数： void
 *  返回值：0
 ********************************************************************/
uint8_t win11_setting_status_btn_enter(void *arg)
{
    if (subidx == 0)
    {
        subidx++;
    }
    else
    {
        system_reinit();
    }
    return WINDOWS_STATUS_DIS_ONLY;
}

/*********************************************************************
 *  名称： win11_setting_status_btn_exit
 *  功能： setting_ota 界面 确定按钮触发，返回上一级菜单
 *  参数： void
 *  返回值：WINDOWS_STATUS_INIT 下一次显示状态
 ********************************************************************/
uint8_t win11_setting_status_btn_exit(void *arg)
{
    Dsystem.windows_cur_id = WIN_UI_SETTING;
    return WINDOWS_STATUS_INIT;
}

/**************************** 内联函数 ********************************/
static void dis_page1(void)
{
    uint32_t free = 0;
    char tmp[32] = {0};
    //uint8_t mac[6] = {0};

    oled.show_string(0, 14, T(const_setting_status_version), STR_SIZE_16, 1);
    oled.show_string(64, 14, T("1.0"), STR_SIZE_16, 1);

    oled.show_string(0, 32, T(const_setting_status_sdk), STR_SIZE_16, 1);
    strncpy(tmp, esp_get_idf_version(), 7);
    tmp[7] = '\0';
    oled.show_string(64, 32, T(tmp), STR_SIZE_16, 1);
    memset(tmp, 0, sizeof(tmp));

    free = esp_get_free_heap_size();
    oled.show_string(0, 50, T(const_setting_status_free), STR_SIZE_16, 1);
    sprintf(tmp, "%d", free / 1024);
    oled.show_string(64, 50, T(tmp), STR_SIZE_16, 1);
    memset(tmp, 0, sizeof(tmp));
}

static void dis_page2(void)
{
    oled.show_string(POSITION_CENTER(const_setting_status_init, STR_SIZE_16), 24, T(const_setting_status_init), STR_SIZE_16, 0);
    oled.show_string(1, 42, T(const_setting_status_init_tag), STR_SIZE_12, 1);
}
